Vue常见指令

360次阅读
没有评论

共计 2211 个字符,预计需要花费 6 分钟才能阅读完成。

Vue 中的指令按照不同的用途可分为 6 大类:

  1. 内容渲染指令
  2. 属性绑定指令
  3. 事件绑定指令
  4. 双向绑定指令
  5. 条件渲染指令
  6. 列表渲染指令

内容渲染

内容渲染指令用来辅助开发者渲染 DOM 元素的文本内容。常见的内容渲染指令有 3 个:v-text、{{}}、v-html。

v-text

会覆盖掉元素里面的内容。

{{}}

专业名称是插值表达式(Mustache),专门用来解决 v-text 会覆盖默认文本内容的问题。

插值表达式可以使用过滤器:

<div id="app">
  <p>{{message | capitalize}}</p>
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {message: "i love vue!",},
    filters: {capitalize(str) {return str.charAt(0).toUpperCase() + str.slice(1);
      },
    },
  });
</script>

过滤器仅在 vue 2.x 和 1.x 中受支持,在 vue 3.x 的版本中剔除了过滤器相关的功能。

3.x 版本的 vue,官方建议使用计算属性或方法代替被剔除的过滤器功能。

v-html

用来输出 html 元素内容,会覆盖掉元素里面的内容。

属性绑定指令

v-bind

给元素属性动态绑定属性值,可简写为 :

<img v-bind:src="imageUrl">
<img :src="imageUrl">

v-bind 属于单向绑定,即 JS 修改 ->HTML 修改。

v-bind 动态绑定多个值:

<template>
  <div v-bind="obj"> 测试一下 </div>
</template>

<script>
export default {data() {
    return {
      obj: {
        id: 'id',
        class: 'class',
      },
    }
  },
}
</script>

v-bind 操作 class:

  • :class=”{类名 1: 布尔值, 类名 2: 布尔值}”
  • :class=”[类名 1, 类名 2, 类名 3]”

事件绑定指令

v-on

事件相关的指令,如:

  • v-on:click
  • v-on:dblclick
  • v-on:mouseover
  • v-on::mouseout
  • v-on:change
  • v-on:focus
  • v-on:input
  • v-on:keyup

v-on: 可简写为 @。Vue 中的 Event 对象,就是原生 JS 的 Event 对象。

双向绑定指令

v-model

可以在表单 input、textarea 以及 select 元素上创建双向数据绑定。

<body>
<div id="app">
    <div>
        用户名:<input type="text" v-model="user">
    </div>
    <div>
        密码:<input type="password" v-model="pwd">
    </div>
    <input type="button" value=" 登录 " v-on:click="clickMe">
    <input type="button" value=" 重置 " v-on:click="resetForm">
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            user: "",
            pwd: ""
        },
        methods: {clickMe: function () {console.log(this.user, this.pwd)
            },
            resetForm: function () {
                this.user = '';
                this.pwd = '';
            }
        }
    });
</script>
</body>

为了方便对用户输入的内容进行处理,Vue 为 v-model 指令提供了 3 个修饰符,分别是:

  • .number,自动将用户的输入值转为数值类型
  • .trim,自动过滤用户输入的首尾空白字符
  • .lazy,在“change”时而非“input”时更新

用法如下:

<input type="text" v-model.number="n1" /> +
<input type="text" v-model.number="n2" /> =
<span>{{n1 + n2}}</span>

条件渲染指令

v-if

动态地创建或移除 DOM 元素,从而控制元素在页面上的显示与隐藏。

v-if 可以单独使用,或配合 v-else(v-else-if)指令一起使用。

v-show

动态为元素添加或移除 style=”display: none;” 样式,从而控制元素的显示与隐藏。

区别

v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此:

  • 如果需要非常频繁地切换,则使用 v-show 较好
  • 如果在运行时条件很少改变,则使用 v-if 较好

列表渲染指令

v-for

<div id="app">
  <ul>
    <li v-for="(p,index) in persons" :key="p.id">
      {{index}}: {{p.name}} - {{p.age}}
    </li>
  </ul>
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      persons: [{ id: "001", name: " 张三 ", age: 18},
        {id: "002", name: " 李四 ", age: 19},
        {id: "003", name: " 王五 ", age: 20},
      ],
    },
  });
</script>

也可以使用 of 作为分隔符来替代 in,这更接近 JavaScript 的迭代器语法:v-for="item of items"

循环尽量不要和 v -if 同时使用,因为 v -if 的优先级更高。

正文完
 0
阿伯手记
版权声明:本站原创文章,由 阿伯手记 于2023-08-17发表,共计2211字。
转载说明:本站原创内容,除特殊说明外,均基于 CC BY-NC-SA 4.0 协议发布,转载须注明出处与链接。
评论(没有评论)
验证码

阿伯手记

阿伯手记
阿伯手记
喜欢编程,头发渐稀;成长路上,宝藏满地
文章数
767
评论数
207
阅读量
682388
今日一言
-「
热门文章
职场救急!AI请假话术生成器:1秒定制高通过率理由

职场救急!AI请假话术生成器:1秒定制高通过率理由

超级借口 不好开口?借口交给我!智能生成工作请假、上学请假、饭局爽约、约会拒绝、邀约推辞、万能借口等各种借口理...
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
TVAPP:开源电视盒子资源库,一键打造家庭影院

TVAPP:开源电视盒子资源库,一键打造家庭影院

导语 TVAPP 是一个专为 Android TV 电视盒子用户打造的开源影音资源库,集成了影视、直播、游戏等...
巴别英语:用美剧和TED演讲轻松提升英语听力与口语

巴别英语:用美剧和TED演讲轻松提升英语听力与口语

还在为枯燥的英语学习而烦恼吗?巴别英语通过创新的美剧学习模式,让英语学习变得生动有趣。平台提供海量美剧和 TE...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
2025年12月 每日精选

2025年12月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 12 月 26 日 .ax 顶级域 目前全球唯一...
123云盘限时福利:登录即送1个月VIP尊享权益!

123云盘限时福利:登录即送1个月VIP尊享权益!

🎁  零成本体验 20T 超大空间与会员加速通道 🎉 活动亮点 登录即送:无需任何复杂操作,登录账号直接领取 ...
最新评论
阿伯手记 阿伯手记 发了:https://aboss.top/moments/1064
吴蛋蛋 吴蛋蛋 快发小年快乐
吴蛋蛋 吴蛋蛋 Ask4Me,这个之前看server酱接入了
15220202929 15220202929 怎么用
八对 八对 麻烦大佬更新下【堆新】的友链站名:八对星星描述:极目星视穹苍无界•足履行者大地有疆链接:https://8dui.com图标:https://cf.8dui.com/logo.webp横标:https://cf.8dui.com/logo-w.webp订阅:https://8dui.com/rss.xml
三毛笔记 三毛笔记 已添加
DUINEW DUINEW 已添加贵站,期待贵站友链~博客名称:堆新博客地址:https://duinew.com/博客描述:堆新堆新,引力向新!——堆新(DUINEW)博客头像:https://d.duinew.com/logo.webp横版头像:https://d.duinew.com/logo-w.webp博客订阅:https://duinew.com/rss.xml
hedp hedp 没看懂
bingo bingo 直接生成就可以啦,也可以添加一些选项
热评文章
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 是一款基于 Fastify、Vercel 和 Supabase 构建的 URL 缩短服务...
清华大学官方免费DeepSeek教程

清华大学官方免费DeepSeek教程

AI 领域近期最引人注目的焦点当属 DeepSeek,这款由中国创新企业深度求索研发的人工智能工具,正以开放源...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
2026年2月 每日精选

2026年2月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 2 月 17 日 国家全民健身信息服务平台 过年...
DrawLink:一键生成链接视觉卡片,提升分享点击率

DrawLink:一键生成链接视觉卡片,提升分享点击率

小贴士 :此站或已变迁,但探索不止步。我们已为您备好「类似网站」精选合集,相信其中的发现同样能为您带来惊喜。
WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror:基于浏览器免费开源投屏神器,可实现低延迟、跨平台屏幕共享

WebRTC Screen Mirror 是一款基于 WebRTC 技术的在线屏幕共享工具,它利用浏览器内置的...